import axios, {AxiosInstance, AxiosRequestConfig, AxiosResponse} from 'axios';

// 创建 Axios 实例
const service: AxiosInstance = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API || '', // 根据环境变量设置基础 URL
    timeout: 10000, // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
    (config) => {
        // 这里可以添加 token 处理逻辑
        const token = localStorage.getItem('token');
        if (token) {
            config.headers.Authorization = `Bearer ${token}`;
        }
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    (response: AxiosResponse) => {
        if (response.data.data) {
            return response.data.data; // 只返回 `data`，避免返回 `AxiosResponse<T>`

        }
        throw new Error(response.data.message);
    },
    (error) => {
        console.error('API Error:', error);
        return Promise.reject(error);
    }
);

// **封装通用请求方法**
export function apiRequest<T>(config: AxiosRequestConfig): Promise<T> {
    return service.request<T>(config);
}
